import { Injectable }    from '@angular/core';

import { LoggerService } from './logger.service';
import { UserService }   from './user.service';


// 注意在 UserContextService 类里面的 @Injectable() 装饰器。
// 该装饰器让 Angular 有能力识别这两个依赖 LoggerService 和 UserService 的类型。
@Injectable()
export class UserContextService {
  name: string;
  role: string;
  loggedInSince: Date;

  // UserContext 有两个依赖 LoggerService( 再一次 ) 和负责获取特定用户信息的 UserService 。
  constructor(private userService: UserService, private loggerService: LoggerService) {
    this.loggedInSince = new Date();
  }

  loadUser(userId: number) {
    let user = this.userService.getUserById(userId);
    this.name = user.name;
    this.role = user.role;

    this.loggerService.logDebug('loaded User');
  }
}
